<?php

// src/Gds/UserBundle/Entity/User.php

namespace Gds\UserBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * Gds\UserBundle\Entity\User

 * @ORM\Table(name="fos_user")
 * @ORM\Entity(repositoryClass="Gds\UserBundle\Entity\UserRepository")
 */
class User extends BaseUser {

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\Devis", mappedBy="user", cascade={"remove", "persist"})
     */
    private $devis;

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\BonCommandeClient", mappedBy="user", cascade={"remove", "persist"})
     */
    private $bon_commande_client;
    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\BonLivraisonFournisseur", mappedBy="user", cascade={"remove", "persist"})
     */
    private $factures_fournisseur;
    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\ReglementFournisseur", mappedBy="user", cascade={"remove", "persist"})
     */
    private $reglements_fournisseur;
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\ReglementClient", mappedBy="user", cascade={"remove", "persist"})
     */
    private $reglements_client;
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\BonLivraisonClient", mappedBy="user", cascade={"remove", "persist"})
     */
    private $bon_livraison_client;

        /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\BonLivraisonRetourClient", mappedBy="user", cascade={"remove", "persist"})
     */
    private $bon_retour_client;

    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\BonLivraisonFournisseur", mappedBy="user", cascade={"remove", "persist"})
     */
    private $bons_livraison_fournisseur;

    
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\HistoryBonLivraisonClient", mappedBy="user", cascade={"remove", "persist"})
     */
    private $history_bon_livraison_client;

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\FactureClient", mappedBy="user", cascade={"remove", "persist"})
     */
    private $facture_client;
        /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\FactureAvoirClient", mappedBy="user", cascade={"remove", "persist"})
     */
    private $facture_avoir_client;

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string $photo
     *
     * @ORM\Column(name="photo", type="string", length=255)
     */
    protected $photo;

    /**
     * @var string $nom
     *
     * @ORM\Column(name="nom", type="string", length=255)
     */
    protected $nom;

    /**
     * @var string $nom
     *
     * @ORM\Column(name="is_caissier", type="boolean")
     */
    protected $is_caissier;

    /**
     * @var string $prenom
     *
     * @ORM\Column(name="prenom", type="string", length=255)
     */
    protected $prenom;

    /**
     * @var string $telephone
     *
     * @ORM\Column(name="telephone", type="string", length=255)
     */
    protected $telephone;

    /**
     * @var string $cin
     *
     * @ORM\Column(name="cin", type="integer", length=8)
     */
    protected $cin;

    /**
     * @var string $function
     *
     * @ORM\Column(name="function", type="string", length=50)
     */
    protected $function;

    /**
     * @ORM\ManyToOne(targetEntity="Gds\ArticleBundle\Entity\Departement", inversedBy="employers")
     * @ORM\JoinColumn(name="departement_id", referencedColumnName="id", nullable=true)
     */
    private $departement;

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\SessionCaisse", mappedBy="user")
     */
    private $sessions;
    
    public function __construct() {
        $this->is_caissier = false;
        parent::__construct();
        // your own logic
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId() {
        return $this->id;
    }

    public function getNomPrenom() {
        return $this->nom . ' ' . $this->prenom;
    }

    public function __toString() {
        return $this->getNomPrenom();
    }

    /**
     * Set photo
     *
     * @param string $photo
     * @return User
     */
    public function setPhoto($photo) {
        $this->photo = $photo;

        return $this;
    }

    /**
     * Get photo
     *
     * @return string 
     */
    public function getPhoto() {
        return $this->photo;
    }

    /**
     * Set nom
     *
     * @param string $nom
     * @return User
     */
    public function setNom($nom) {
        $this->nom = $nom;

        return $this;
    }

    /**
     * Get nom
     *
     * @return string 
     */
    public function getNom() {
        return $this->nom;
    }

    /**
     * Set prenom
     *
     * @param string $prenom
     * @return User
     */
    public function setPrenom($prenom) {
        $this->prenom = $prenom;

        return $this;
    }

    /**
     * Get prenom
     *
     * @return string 
     */
    public function getPrenom() {
        return $this->prenom;
    }

    /**
     * Set telephone
     *
     * @param string $telephone
     * @return User
     */
    public function setTelephone($telephone) {
        $this->telephone = $telephone;

        return $this;
    }

    /**
     * Get telephone
     *
     * @return string 
     */
    public function getTelephone() {
        return $this->telephone;
    }

    /**
     * Set cin
     *
     * @param integer $cin
     * @return User
     */
    public function setCin($cin) {
        $this->cin = $cin;

        return $this;
    }

    /**
     * Get cin
     *
     * @return integer 
     */
    public function getCin() {
        return $this->cin;
    }

    /**
     * Set function
     *
     * @param string $function
     * @return User
     */
    public function setFunction($function) {
        $this->function = $function;

        return $this;
    }

    /**
     * Get function
     *
     * @return string 
     */
    public function getFunction() {
        return $this->function;
    }

    /**
     * Set departement
     *
     * @param \Gds\ArticleBundle\Entity\Departement $departement
     * @return User
     */
    public function setDepartement(\Gds\ArticleBundle\Entity\Departement $departement = null) {
        $this->departement = $departement;

        return $this;
    }

    /**
     * Get departement
     *
     * @return \Gds\ArticleBundle\Entity\Departement 
     */
    public function getDepartement() {
        return $this->departement;
    }

    /**
     * Add sessions
     *
     * @param \Gds\VenteBundle\Entity\SessionCaisse $sessions
     * @return User
     */
    public function addSession(\Gds\VenteBundle\Entity\SessionCaisse $sessions) {
        $this->sessions[] = $sessions;

        return $this;
    }

    /**
     * Remove sessions
     *
     * @param \Gds\VenteBundle\Entity\SessionCaisse $sessions
     */
    public function removeSession(\Gds\VenteBundle\Entity\SessionCaisse $sessions) {
        $this->sessions->removeElement($sessions);
    }

    /**
     * Get sessions
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getSessions() {
        return $this->sessions;
    }

    /**
     * Set is_caissier
     *
     * @param boolean $isCaissier
     * @return User
     */
    public function setIsCaissier($isCaissier) {
        $this->is_caissier = $isCaissier;

        return $this;
    }

    /**
     * Get is_caissier
     *
     * @return boolean 
     */
    public function getIsCaissier() {
        return $this->is_caissier;
    }

    /**
     * Add devis
     *
     * @param \Gds\VenteBundle\Entity\Devis $devis
     * @return User
     */
    public function addDevi(\Gds\VenteBundle\Entity\Devis $devis) {
        $this->devis[] = $devis;

        return $this;
    }

    /**
     * Remove devis
     *
     * @param \Gds\VenteBundle\Entity\Devis $devis
     */
    public function removeDevi(\Gds\VenteBundle\Entity\Devis $devis) {
        $this->devis->removeElement($devis);
    }

    /**
     * Get devis
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getDevis() {
        return $this->devis;
    }

    /**
     * Add bon_commande_client
     *
     * @param \Gds\VenteBundle\Entity\BonCommandeClient $bonCommandeClient
     * @return User
     */
    public function addBonCommandeClient(\Gds\VenteBundle\Entity\BonCommandeClient $bonCommandeClient) {
        $this->bon_commande_client[] = $bonCommandeClient;

        return $this;
    }

    /**
     * Remove bon_commande_client
     *
     * @param \Gds\VenteBundle\Entity\BonCommandeClient $bonCommandeClient
     */
    public function removeBonCommandeClient(\Gds\VenteBundle\Entity\BonCommandeClient $bonCommandeClient) {
        $this->bon_commande_client->removeElement($bonCommandeClient);
    }

    /**
     * Get bon_commande_client
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getBonCommandeClient() {
        return $this->bon_commande_client;
    }

    /**
     * Add bon_livraison_client
     *
     * @param \Gds\VenteBundle\Entity\BonLivraisonClient $bonLivraisonClient
     * @return User
     */
    public function addBonLivraisonClient(\Gds\VenteBundle\Entity\BonLivraisonClient $bonLivraisonClient) {
        $this->bon_livraison_client[] = $bonLivraisonClient;

        return $this;
    }

    /**
     * Remove bon_livraison_client
     *
     * @param \Gds\VenteBundle\Entity\BonLivraisonClient $bonLivraisonClient
     */
    public function removeBonLivraisonClient(\Gds\VenteBundle\Entity\BonLivraisonClient $bonLivraisonClient) {
        $this->bon_livraison_client->removeElement($bonLivraisonClient);
    }

    /**
     * Get bon_livraison_client
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getBonLivraisonClient() {
        return $this->bon_livraison_client;
    }

    /**
     * Add facture_client
     *
     * @param \Gds\VenteBundle\Entity\FactureClient $factureClient
     * @return User
     */
    public function addFactureClient(\Gds\VenteBundle\Entity\FactureClient $factureClient) {
        $this->facture_client[] = $factureClient;

        return $this;
    }

    /**
     * Remove facture_client
     *
     * @param \Gds\VenteBundle\Entity\FactureClient $factureClient
     */
    public function removeFactureClient(\Gds\VenteBundle\Entity\FactureClient $factureClient) {
        $this->facture_client->removeElement($factureClient);
    }

    /**
     * Get facture_client
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getFactureClient() {
        return $this->facture_client;
    }


    /**
     * Add history_bon_livraison_client
     *
     * @param \Gds\VenteBundle\Entity\HistoryBonLivraisonClient $historyBonLivraisonClient
     * @return User
     */
    public function addHistoryBonLivraisonClient(\Gds\VenteBundle\Entity\HistoryBonLivraisonClient $historyBonLivraisonClient)
    {
        $this->history_bon_livraison_client[] = $historyBonLivraisonClient;

        return $this;
    }

    /**
     * Remove history_bon_livraison_client
     *
     * @param \Gds\VenteBundle\Entity\HistoryBonLivraisonClient $historyBonLivraisonClient
     */
    public function removeHistoryBonLivraisonClient(\Gds\VenteBundle\Entity\HistoryBonLivraisonClient $historyBonLivraisonClient)
    {
        $this->history_bon_livraison_client->removeElement($historyBonLivraisonClient);
    }

    /**
     * Get history_bon_livraison_client
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getHistoryBonLivraisonClient()
    {
        return $this->history_bon_livraison_client;
    }

    /**
     * Add bon_retour_client
     *
     * @param \Gds\VenteBundle\Entity\BonLivraisonRetourClient $bonRetourClient
     * @return User
     */
    public function addBonRetourClient(\Gds\VenteBundle\Entity\BonLivraisonRetourClient $bonRetourClient)
    {
        $this->bon_retour_client[] = $bonRetourClient;

        return $this;
    }

    /**
     * Remove bon_retour_client
     *
     * @param \Gds\VenteBundle\Entity\BonLivraisonRetourClient $bonRetourClient
     */
    public function removeBonRetourClient(\Gds\VenteBundle\Entity\BonLivraisonRetourClient $bonRetourClient)
    {
        $this->bon_retour_client->removeElement($bonRetourClient);
    }

    /**
     * Get bon_retour_client
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getBonRetourClient()
    {
        return $this->bon_retour_client;
    }

    /**
     * Add facture_avoir_client
     *
     * @param \Gds\VenteBundle\Entity\FactureAvoirClient $factureAvoirClient
     * @return User
     */
    public function addFactureAvoirClient(\Gds\VenteBundle\Entity\FactureAvoirClient $factureAvoirClient)
    {
        $this->facture_avoir_client[] = $factureAvoirClient;

        return $this;
    }

    /**
     * Remove facture_avoir_client
     *
     * @param \Gds\VenteBundle\Entity\FactureAvoirClient $factureAvoirClient
     */
    public function removeFactureAvoirClient(\Gds\VenteBundle\Entity\FactureAvoirClient $factureAvoirClient)
    {
        $this->facture_avoir_client->removeElement($factureAvoirClient);
    }

    /**
     * Get facture_avoir_client
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getFactureAvoirClient()
    {
        return $this->facture_avoir_client;
    }


    /**
     * Add bons_livraison_fournisseur
     *
     * @param \Gds\AchatBundle\Entity\BonLivraisonFournisseur $bonsLivraisonFournisseur
     * @return User
     */
    public function addBonsLivraisonFournisseur(\Gds\AchatBundle\Entity\BonLivraisonFournisseur $bonsLivraisonFournisseur)
    {
        $this->bons_livraison_fournisseur[] = $bonsLivraisonFournisseur;

        return $this;
    }

    /**
     * Remove bons_livraison_fournisseur
     *
     * @param \Gds\AchatBundle\Entity\BonLivraisonFournisseur $bonsLivraisonFournisseur
     */
    public function removeBonsLivraisonFournisseur(\Gds\AchatBundle\Entity\BonLivraisonFournisseur $bonsLivraisonFournisseur)
    {
        $this->bons_livraison_fournisseur->removeElement($bonsLivraisonFournisseur);
    }

    /**
     * Get bons_livraison_fournisseur
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getBonsLivraisonFournisseur()
    {
        return $this->bons_livraison_fournisseur;
    }


    /**
     * Add factures_fournisseur
     *
     * @param \Gds\AchatBundle\Entity\BonLivraisonFournisseur $facturesFournisseur
     * @return User
     */
    public function addFacturesFournisseur(\Gds\AchatBundle\Entity\BonLivraisonFournisseur $facturesFournisseur)
    {
        $this->factures_fournisseur[] = $facturesFournisseur;

        return $this;
    }

    /**
     * Remove factures_fournisseur
     *
     * @param \Gds\AchatBundle\Entity\BonLivraisonFournisseur $facturesFournisseur
     */
    public function removeFacturesFournisseur(\Gds\AchatBundle\Entity\BonLivraisonFournisseur $facturesFournisseur)
    {
        $this->factures_fournisseur->removeElement($facturesFournisseur);
    }

    /**
     * Get factures_fournisseur
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getFacturesFournisseur()
    {
        return $this->factures_fournisseur;
    }

    /**
     * Add reglements_fournisseur
     *
     * @param \Gds\AchatBundle\Entity\ReglementFournisseur $reglementsFournisseur
     * @return User
     */
    public function addReglementsFournisseur(\Gds\AchatBundle\Entity\ReglementFournisseur $reglementsFournisseur)
    {
        $this->reglements_fournisseur[] = $reglementsFournisseur;

        return $this;
    }

    /**
     * Remove reglements_fournisseur
     *
     * @param \Gds\AchatBundle\Entity\ReglementFournisseur $reglementsFournisseur
     */
    public function removeReglementsFournisseur(\Gds\AchatBundle\Entity\ReglementFournisseur $reglementsFournisseur)
    {
        $this->reglements_fournisseur->removeElement($reglementsFournisseur);
    }

    /**
     * Get reglements_fournisseur
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getReglementsFournisseur()
    {
        return $this->reglements_fournisseur;
    }

    /**
     * Add reglements_client
     *
     * @param \Gds\VenteBundle\Entity\ReglementClient $reglementsClient
     * @return User
     */
    public function addReglementsClient(\Gds\VenteBundle\Entity\ReglementClient $reglementsClient)
    {
        $this->reglements_client[] = $reglementsClient;

        return $this;
    }

    /**
     * Remove reglements_client
     *
     * @param \Gds\VenteBundle\Entity\ReglementClient $reglementsClient
     */
    public function removeReglementsClient(\Gds\VenteBundle\Entity\ReglementClient $reglementsClient)
    {
        $this->reglements_client->removeElement($reglementsClient);
    }

    /**
     * Get reglements_client
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getReglementsClient()
    {
        return $this->reglements_client;
    }
}
